$┼┼┼6 ╙ET BIT 3 OF PORT ─ [$03] TO ZERO TO TELL ═╙─ CHIPS WE ARE LISTENING.
$┼┼┼8 ─ISABLE INTERRUPTS.
$┼┼┼9 ╫AIT FOR UP TO 2.8 MS FOR CLOCK LINE TO GO LOW.
$┼┼╞1 ├LEAR THE LISTENER ACTIVE, ╠╙╬┴├╘ [$50] AND TALKER ACTIVE, ╘╠╦┴├╘ [$51] FLAGS.
$┼┼╞7 ╙ET STACK POINTER TO $╞╞.
$┼┼╞┴ ╙ET ┼╧╔╞╠╟ [$┬1] TO $80 TO INDICATE NON-┼╧╔ STATE.
$┼╞00 ╩╙╥ ├╠╦╚╔ [$╞019] TO SET THE CLOCK OUT LINE HIGH.
$┼╞03 ╩╙╥ ─┴╘╠╧╫ [$╞01┼] TO SET THE DATA OUT LINE LOW.
$┼╞06 ┴CKNOWLEDGE THE ┴╘╬ SIGNAL BY SETTING THE ┴╘╬ ┴├╦ SIGNAL LINE 1 IN PORT ┴ [$00].
$┼╞08 ┴╘╬╙15 ╔F THE ┴╘╬ SIGNAL HAS GONE, BRANCH TO ┴╘╬╙20 TO CARRY OUT THE ┴╘╬ COMMAND.
$┼╞0┬ ├HECK THE CLOCK SIGNAL. ╔F ABSENT, WAIT FOR IT BY BRANCHING BACK TO ┴╘╬╙15.
║FP0
$┼╞0┼ ┴╘╬30 ╩╙╥ ┴├╨╘╥ [$╞038] TO GET THE COMMAND BYTE.
$┼╞11 ╔F THIS IS NOT AN UNLISTEN COMMAND ($3╞) THEN BRANCH TO ┴╘╬35.
$┼╞15 ╙ET ╠╙╬┴├╘ [$50] TO ZERO AND BRANCH TO ┴╘╬122.
$┼╞1┬ ┴╘╬35 ╔F THIS IS NOT AN UNTALK COMMAND ($5╞) THEN BRANCH TO ┴╘╬40.
$┼╞1╞ ╙ET ╘╠╦┴├╘ [$51] TO ZERO AND BRANCH TO ┴╘╬122.
$┼╞25 ┴╘╬40 ╙EE IF THIS IS OUR TALK ADDRESS BY COMPARING THE COMMAND WITH ╘╠╦┴─╥ [$78]. ╔F IT DOES NOT MATCH THEN BRANCH TO ┴╘╬45.
$┼╞29 ╙ET ╘╠╦┴├╘ [$51] TO $01 AND SET ╠╙╬┴├╘ [$50] TO ZERO AND BRANCH TO ┴╘╬95.
$┼╞32 ┴╘╬45 ╙EE IF THIS IS OUR LISTEN ADDRESS BY COMPARING THE COMMAND WITH ╠╙╬┴─╥ [$77]. ╔F IT DOES NOT MATCH THEN BRANCH TO ┴╘╬50.
$┼╞36 ╙ET ╠╙╬┴├╘ [$50] TO $01 AND SET ╘╠╦┴├╘ [$51] TO ZERO AND BRANCH TO ┴╘╬95.
$┼╞3╞ ┴╘╬50 ╙AVE COMMAND BYTE BY COPYING IT TO .╪.
$┼╞40 ├HECK FOR A SECONDARY ADDRESS BY ┴╬─ING WITH $60. ╔F THE RESULT IS NOT $60 THEN IT IS NOT A SECONDARY ADDRESS SO BRANCH TO ┴╘╬120.
$┼╞46 ╘HE COMMAND IS A SECONDARY ADDRESS. ╥ESTORE IT FROM .╪ AND SAVE IT IN ╧╥╟╙┴ [$59]. ┴╬─ IT WITH $0╞ TO GET THE ACTUAL SECONDARY ADDRESS AND SAVE THE RESULT IN ╙┴ [$58].
$┼╞4─ ╥ESTORE THE COMMAND FROM .╪ AND CHECK FOR A CLOSE COMMAND BY ┴╬─ING WITH $╞0. ╔F THE RESULT IS NOT $┼0 THEN IT IS NOT A ├╠╧╙┼ COMMAND SO BRANCH TO ┴╘╬122.
$┼╞54 ┼NABLE INTERRUPTS AND CLOSE THE FILE WITH A ╩╙╥ ├╠╧╙┼ [$─┴15].
$┼╞58 ─ISABLE INTERRUPTS AND TELL ═╙─ CHIPS WE ARE LISTENING BY CLEARING BIT 3 OF PORT ─ [$03].
$┼╞5┬ ┴╘╬95 ╔F ┴╘╬ IS STILL SET, BRANCH BACK TO ┴╘╬30 TO OBTAIN AND PROCESS ANOTHER COMMAND BYTE.
$┼╞5┼ ┴╘╬╙20 ┴╘╬ SIGNAL GONE. ├ARRY OUT THE COMMAND. ╔NDICATE ┴╘╬ GONE BY CLEARING ┴╘╬═╧─ [$52].
$┼╞62 ├LEAR ┴╘╬ ┴├╦ SIGNAL, BIT 1 OF PORT ┴ [$00].
$┼╞64 ╔F ╠╙╬┴├╘ [$50] IS ZERO, WE ARE NOT LISTENING SO BRANCH TO ┴╘╬100.
$┼╞68 ╩╙╥ ╠╔╙╘┼╬ [$╞08╞] TO OBTAIN DATA OVER THE SERIAL BUS.
$┼╞6┬ ╩UMP TO ╔─╠┼ [$┼971] TO WAIT FOR SOMETHING TO HAPPEN.
$┼╞6┼ ┴╘╬100 ╔F ╘╠╦┴├╘ [$51] IS ZERO, WE ARE NOT TALKING SO BRANCH TO ┴╘╬110.
$┼╞72 ╩╙╥ ─┴╘╚╔ [$╞023] TO FREE THE DATA LINE.
$┼╞75 ╩╙╥ ├╠╦╠╧╫ [$╞014] TO SET CLOCK OUT SIGNAL LOW.
$┼╞78 ╩╙╥ ╘┴╠╦ [$┼╞88] TO SEND DATA OVER THE SERIAL BUS.
$┼╞7┬ ┴╘╬110 ╩UMP TO ╔╠┼╥╥ [$╞0┬2] TO RELEASE BUS LINES AND RETURN TO IDLE MODE.
$┼╞7┼ ┴╘╬120 ╙ET ─┴╘┴ ╧╒╘ AND ├╠╦ ╧╒╘ LINES HIGH TO RELEASE THEM.